package queue

// 定义一个 队列
type Queue []int

type myQueue struct{
	*Queue
}

func (q *Queue) Push(v int) {
	// go语言的特性，指针是可以被改变的。 q传进来的是一个指针，*q 去操作它指向的对象
	// 然后 q 指向的对象，再变为 指向 append 新产生的对象
	// *q 相当于 python 中的 self，表示对象本身但是 go 里面， self（q）指向的却被变为了新产生的对象~！
	*q = append(*q, v)
}

// 先进先出队列
func (q *Queue) Pop() int {
	head := (*q)[0]
	*q = (*q)[1:]
	return head
}

func (q *Queue) IsEmpty() bool {
	return len(*q) == 0
}
